package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.bo.ManageLoginBO;
import com.ssy.lingxi.member.merchant.model.bo.WebLoginBO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.*;
import com.ssy.lingxi.member.merchant.model.vo.login.response.CaptchaPicVO;
import com.ssy.lingxi.member.merchant.model.vo.login.response.MemberAuthCodeVO;
import org.springframework.http.HttpHeaders;

/**
 * Web客户端、平台后台用户登录服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-05
 */
public interface IMemberLoginService {

    /**
     * 业务平台 - 账号密码登录
     * @param headers Http头部信息
     * @param loginVO 接口参数
     * @return 操作结果 操作结果
     */
    Wrapper<WebLoginBO> accountOrPhoneLogin(HttpHeaders headers, MemberLoginVO loginVO);

    /**
     * 业务平台 - 切换登录用户的会员角色
     * @param headers HttpHeaders信息
     * @param roleVO 接口参数
     * @return 操作结果 操作结果
     */
    Wrapper<WebLoginBO> switchMemberRole(HttpHeaders headers, MemberLoginSwitchMemberRoleVO roleVO);

    /**
     * 业务平台 - 重新获取登录返回信息接口
     * @param headers HttpHeaders信息
     * @return 操作结果
     */
    Wrapper<WebLoginBO> loginBusinessPlatformWithToken(HttpHeaders headers);

    /**
     * 平台后台 - 账号密码登录
     * @param headers HttpHeaders信息
     * @param loginVO 接口参数
     * @return 操作结果
     */
    Wrapper<ManageLoginBO> manageAccountOrPhoneLogin(HttpHeaders headers, ManageLoginVO loginVO);

    /**
     * 平台后台 - 重新获取登录返回信息接口
     * @param headers HttpHeaders信息
     * @return 操作结果
     */
    Wrapper<ManageLoginBO> loginManagePlatformWithToken(HttpHeaders headers);

    /**
     * 业务平台 - 获取登录授权链接
     * @param headers HttpHeaders信息
     * @return 操作结果
     */
    Wrapper<MemberAuthCodeVO> getAuthLoginUrl(HttpHeaders headers);

    /**
     * 业务平台 - 验证扫码登录(轮询)
     * @param headers HttpHeaders信息
     * @param memberAuthCodeVO 授权码
     * @return 操作结果
     */
    Wrapper<WebLoginBO> getAuthCodeLoginInfo(HttpHeaders headers, ActivityMemberAuthCodeVO memberAuthCodeVO);

    /**
     * 获取滑块图片
     * @param headers HttpHeaders信息
     * @param captchaVO 接口参数
     * @return 滑块图片
     */
    Wrapper<CaptchaPicVO> captcha(HttpHeaders headers, CaptchaVO captchaVO);
}
